#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>
#include <QList>
#include "GLDrawble.h"

class GLWidget : public QGLWidget
{
    Q_OBJECT
public:
    explicit GLWidget(QWidget *parent = 0);

    void addDrawble(GLDrawble* obj)
    { objects.append(obj); }
    void rotateX(float ang)
    { rot[0] = ang; }
    void rotateY(float ang)
    { rot[1] = ang; }
    void rotateZ(float ang)
    { rot[2] = ang; }
    float getZoom(void)
    { return(this->zoom); }
    void setZoom(float novoZoom)
    { this->zoom = novoZoom; }
    int objects_quantidade()
    { return(objects.size()); }
    void objects_Esvaziar()
    { objects.clear(); }
    void objects_SoPodeHaverUm()
    { while (objects.size() > 1) objects.removeLast(); }

protected:
    void initializeGL();            //Método usado para inicializações do openGL
    void paintGL();                 //Método usado para desenhar a cena
    void resizeGL(int w, int h);    //Método usado para ajustar o volume de visualização quando o usuário redimensiona a janela
    void wheelEvent(QWheelEvent *); //Trata eventos de roda do mouse

private:
    QList<GLDrawble*> objects;  //Lista de objetos que serão desenhados

    float rot[3];   //Rotacao x, y e z
    float zoom;     //Fator de zoom
    float r,g,b;

public slots:
    void setRedColor(int vermelho); // Mudar as cores...
    void setGreenColor(int verde);
    void setBlueColor(int azul);
};

#endif // GLWIDGET_H
